package com.wins.litemall.api;

import io.restassured.filter.Filter;
import io.restassured.http.Header;

import static io.restassured.RestAssured.given;
// token 属于谁？ 属于litemall 的鉴权机制

public class BaseLitemallApi {

    public Header token;
    // 获取filter 对象
    // 问题： 随着业务接口增多，filter需要再多处进行实例化操作。
    // 解决： 再父类进行filter 的实例化操作，子类继承后可以直接调用filter实例
    public Filter filter;
    // litemall的 角色属性 ，根据角色的不同初始化对应的不同的token信息
    public String role;
    public Header getToken() {
        return token;
    }

    public void setToken(Header token) {
        this.token = token;
    }

    public void addRole(BaseLitemallApi baseLitemallApi){
        // 对filter 做赋值操作
        this.filter = new ApiFilter(baseLitemallApi.getToken());
    }

    public void setRole(String role) {
        this.role = role;
    }

    // 初始化token 的时候应该传入用户名密码
    public void initToken(String username,  String password){
//        根据角色的不同初始化对应的不同的token信息
        /// 如果是admin ，则初始化admin的token信息
        if(this.role.equals("admin")){
            String loginUrl = "https://litemall.hogwarts.ceshiren.com/admin/auth/login";
            String loginData = "{\"username\":\""+username+"\",\"password\":\""+password+"\",\"code\":\"\"}";
            String tokenValue = given().contentType("application/json").body(loginData)
                    .when().post(loginUrl)
                    .then().extract().path("data.token");
            this.token = new Header("X-Litemall-Admin-Token", tokenValue);
//        log.info("获取的管理端的token为"+this.token);

        }else {
            // 如果是client 则初始化client的token信息
            String clientUrl = "https://litemall.hogwarts.ceshiren.com/wx/auth/login";
            String clientLoginData = "{\"username\":\"user123\",\"password\":\"user123\"}";
            String tokenValue = given().contentType("application/json").body(clientLoginData)
                    .when().post(clientUrl)
                    .then().extract().path("data.token");
            this.token = new Header("X-Litemall-Token", tokenValue);

//        log.info("获取的用户端的token为"+this.token);
        }
    }

}

